package com.deductive.service.dynamic;

import java.util.List;
import java.util.Map;

/**
 * 动态表通用服务接口
 */
public interface IDynamicTableService {

    /**
     * 通用分页查询
     *
     * @param tableName 表名
     * @param columns    要查询的字段列表 (传 null 或空列表则查询所有字段)
     * @param conditions 查询条件 (key为字段名, value为字段值)
     * @return 分页查询结果, 封装在TableDataInfo中
     */
    List<Map<String, Object>> selectPage(String tableName, List<String> columns, List<Map<String, Object>> conditions);

    /**
     * 通用插入方法
     *
     * @param tableName 表名
     * @param data      要插入的数据 (key为字段名, value为字段值)
     * @return 受影响的行数
     */
    int insert(String tableName, Map<String, Object> data);

    /**
     * 通用更新方法
     *
     * @param tableName  表名
     * @param data       要更新的数据 (key为字段名, value为字段值)
     * @param conditions 更新条件 (key为字段名, value为字段值)，必须提供，防止全表更新
     * @return 受影响的行数
     */
    int update(String tableName, Map<String, Object> data, List<Map<String, Object>> conditions);

    /**
     * 通用删除方法
     *
     * @param tableName  表名
     * @param conditions 删除条件 (key为字段名, value为字段值)，必须提供，防止全表删除
     * @return 受影响的行数
     */
    int delete(String tableName, List<Map<String, Object>> conditions);
}

